/*
 * @Author: fjxcjm 3157329468@qq.com
 * @Date: 2025-03-11 18:51:01
 * @LastEditors: fjxcjm 3157329468@qq.com
 * @LastEditTime: 2025-03-12 22:57:08
 * @FilePath: \RuoYi-Vue-master\ruoyi-admin\src\main\java\com\ruoyi\seedlingSys\service\impl\ZaipeiServiceImpl.java
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
package com.ruoyi.seedlingSys.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.seedlingSys.mapper.ZaipeiMapper;
import com.ruoyi.seedlingSys.domain.Zaipei;
import com.ruoyi.seedlingSys.service.IZaipeiService;

/**
 * 栽培管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-03-11
 */
@Service
public class ZaipeiServiceImpl implements IZaipeiService {
    @Autowired
    private ZaipeiMapper zaipeiMapper;

    /**
     * 查询栽培管理
     * 
     * @param zaiPeiID 栽培管理主键
     * @return 栽培管理
     */
    @Override
    public Zaipei selectZaipeiByZaiPeiID(Long zaiPeiID) {
        return zaipeiMapper.selectZaipeiByZaiPeiID(zaiPeiID);
    }

    /**
     * 查询栽培管理列表
     * 
     * @param zaipei 栽培管理
     * @return 栽培管理
     */
    @Override
    public List<Zaipei> selectZaipeiList(Zaipei zaipei) {
        return zaipeiMapper.selectZaipeiList(zaipei);
    }

    /**
     * 新增栽培管理
     * 
     * @param zaipei 栽培管理
     * @return 结果
     */
    @Override
    @Transactional
    public int insertZaipei(Zaipei zaipei) {
        // 设置创建时间
        zaipei.setCreateTime(DateUtils.getNowDate());
        
        // 验证必填字段
        validateZaipei(zaipei);
        
        return zaipeiMapper.insertZaipei(zaipei);
    }

    /**
     * 修改栽培管理
     * 
     * @param zaipei 栽培管理
     * @return 结果
     */
    @Override
    @Transactional
    public int updateZaipei(Zaipei zaipei) {
        // 设置更新时间
        zaipei.setUpdateTime(DateUtils.getNowDate());
        
        // 验证必填字段
        validateZaipei(zaipei);
        
        return zaipeiMapper.updateZaipei(zaipei);
    }

    /**
     * 批量删除栽培管理
     * 
     * @param zaiPeiIDs 需要删除的栽培管理主键
     * @return 结果
     */
    @Override
    public int deleteZaipeiByZaiPeiIDs(Long[] zaiPeiIDs) {
        return zaipeiMapper.deleteZaipeiByZaiPeiIDs(zaiPeiIDs);
    }

    /**
     * 删除栽培管理信息
     * 
     * @param zaiPeiID 栽培管理主键
     * @return 结果
     */
    @Override
    public int deleteZaipeiByZaiPeiID(Long zaiPeiID) {
        return zaipeiMapper.deleteZaipeiByZaiPeiID(zaiPeiID);
    }

    /**
     * 验证栽培信息的必填字段
     */
    private void validateZaipei(Zaipei zaipei) {
        if (zaipei.getZaiPeiTime() == null) {
            throw new RuntimeException("栽培时间不能为空");
        }
        if (zaipei.getZaiPeiManagementName() == null || zaipei.getZaiPeiManagementName().trim().isEmpty()) {
            throw new RuntimeException("管理任务名称不能为空");
        }
        if (zaipei.getZaiPeiDisplayName() == null || zaipei.getZaiPeiDisplayName().trim().isEmpty()) {
            throw new RuntimeException("显示名称不能为空");
        }
        if (zaipei.getZaiPeiType() == null || zaipei.getZaiPeiType().trim().isEmpty()) {
            throw new RuntimeException("栽培类型不能为空");
        }
    }
}
